using System.Collections.Generic;

namespace Core
{
	public interface IRegistryService
	{
		IEnumerable<string> GetSubKeyNames(RegistryLocation location, string subKeyName);

		bool DoesRegistryKeyNameExist(RegistryLocation location, string subKeyName, string name);

		T GetValue<T>(RegistryLocation location, string subKeyName, string name);

		void SetValue(RegistryLocation location, string subKeyName, string name, object value, RegistryValueType type);

		void DeleteValue(RegistryLocation location, string subKeyName, string name);

		T TryGetValue<T>(RegistryLocation location, string path, string name, T defaultValue);

		void TrySetValue<T>(RegistryLocation location, string path, string name, T value);
	}
}
